<?php
/**
 * 
 * Класс управление модулями
 * Выполняет автоматическую загрузку классов
 * @author mr.Pie
 * 
 */
class Modules {
	/** Массив с именами и путям классов*/
	private static $classes;
	/** Массив загруженных классов*/
	private static $activated;
	
	/** Загрузка класса */
	static function Load($class_name) {
		if ($class_name == "_SELF_") {
			// Загрузка самого себя
			self::$activated = array ();
			self::$classes = array ();
			// Подкгрузка списка модулей системы
			self::LoadModules ( SYSTEM_PATH . "/modules.list.php" );
			// Подгрузка списка модулей самйта
			self::LoadModules ( MODULES_PATH . "/modules.list.php" );
			// установка обработчика автозагрузки модулей
			spl_autoload_register ( array ("Modules", "Load" ) );
		} else {
			if (isset ( self::$classes [$class_name] ) && ! isset ( self::$activated [$class_name] )) {
				// подключение класса
				include_once self::$classes [$class_name];
				// вызов инициализирующей функции
				if (method_exists ( $class_name, "Create" )) {
					call_user_func ( array ($class_name, "Create" ) );
				}
			}
		}
	}
	
	/** Загрузка списка модулей */
	static function LoadModules($module_file) {
		$modules_list = NULL;
		if (file_exists ( $module_file )) {
			include_once $module_file;
		}
		if (isset ( $modules_list )) {
			foreach ( $modules_list as $name => $file ) {
				self::$classes [$name] = $file;
			}
		}
	}
}
?>